Content delivery system special network device and special local area network connection, content discovery, data transfer, and control methods

ABSTRACT

Apparatuses, methods and infrastructures for interacting with SNDs and SLANs are described. In one embodiment, a network arrangement comprises: a plurality of access points that are part of one or more existing networks and operable to individually address and communicate with each other to form a local area network (LAN) to transfer data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more existing networks, wherein each access point of the plurality of access points is associated with a cache to store content that may be forwarded, via one or more direct point-to-point transfers between access point pairs of the plurality of access points, to other access points in the plurality of access points in response to transfer request messages to transfer the content; and wherein each access point has a mapping indicative of a first set of one or more access points of the plurality of access points, if any, for which said each access point is to repeat messages and, for each access point in the first set, a first list of one or more access points in the plurality of access points from which the messages are to be forwarded once received if necessary, with no two access points in the plurality of access points that are directly connected to a third access point repeating a same message to the third access point.

PRIORITY

This application incorporates by reference and claims benefit to U.S. Patent Application No. 62/958,240, filed on Jan. 7, 2020 and entitled “SPECIAL NETWORK DEVICE AND SPECIAL LOCAL AREA NETWORK CONNECTION, CONTENT DISCOVERY, DATA TRANSFER, AND CONTROL METHODS”.

FIELD OF THE INVENTION

Embodiments of the invention generally relate to the field of networking and secure data transfer over ad-hoc networks.

BACKGROUND

The digital data transferred over the Internet is growing rapidly, driven primarily by video. Downloaded video, Video on Demand (VOD), live video (both broadcast video and consumer video), interactive video (e.g., video conferencing, video telephony, and video gaming) are all growing in popularity.

Networking companies, such as cellular and cable companies are investing heavily in everything from optical fiber to next generation millimeter wave cellular (e.g., 5G) technology. However, there are often diminishing returns on such investments for these companies as the “price per bit” has fallen rapidly due to heavy competition. The so called “last mile” problem the data transfer between the network data center (e.g., Internet Service Provider (ISP), cellar network) and customer's device or local area network (LAN)—is by far the most expensive and difficult of the networking challenges.

For video specifically, there are three challenging metrics for data transfer performance directly related to Quality of Service (QoS) and Quality of Experience (QoE). First, especially for interactive video and live video, reducing the latency (time from source to destination) is critical for a pleasant user experience. With high latency, people in a video conference, for example, often talk over each other creating awkward and unnatural communication.

Second, the continuity of transfer is critical, especially for VOD, live and interactive video. Pauses and the dreaded buffering symbol are annoying to the viewer. Since a large amount of data needs to be transferred at a relatively constant rate for the duration of the video, any interruption or diminution in bandwidth will cause problems. Most approaches to mitigating the effects of changing bandwidth involve adapting the size and quality of the video data dynamically to match fluctuations in bandwidth. Quality selective protocols (e.g., Dynamic Adaptive Streaming over HTTP or MPEG-DASH) are used. This reduces the bandwidth needed to transfer the video at the cost of video quality. However, it does not solve network drop out when there is no data stream at all.

Third, simply put, video data is very large. This requires a lot of bandwidth and computation at the source, at strategic nodes throughout the networks, and, worst of all, at the “last mile”. In many places and/or at popular times for streaming such bandwidth is limited. And improving bandwidth for all places, and for peak time, is hugely expensive. Witness the extremely slow roll out of the new 5G cellular technology.

One increasingly common technique to help mitigate these problems is Content Delivery Networks that are sometimes called Content Distribution Networks (CDN). CDNs are geographically distributed networks of proxy servers and data centers at the edge of the network. Rather than video data being served from a single server or data center at one location in the world, the video is distributed (copied) from the source server to a number of CDN edge nodes strategically placed around the globe. The data copies are either preloaded into the CDN cache as desired or transferred when a CDN edge node receives the first request.

Requests for data from client devices are redirected to the physically most appropriate CDN edge node. If the CDN edge node has the data cached the response is quick with relatively low latency. If not, the CDN edge node requests the data from either another CDN edge node or the source server. The data is delivered to the client device and cached at the CDN edge node.

For a content provider with a central repository of content, there are two advantages. First, since the content provider's source server or data center only has to serve a few (maybe hundreds) CDN edge nodes, rather than potentially millions of client requests, the burden on the source server and store are less. Second, in many cases the transfer between the source server and the CDN edge nodes is achieved with high bandwidth, predictable, even dedicated, network connections, reducing the latency from the source server to the edge nodes. For example, Amazon Web Services, AWS, uses dedicated high bandwidth connections between its regional data centers and the AWS CloudFront CDN service. (Note that the CDN service can be independent of the content server and store service. And high bandwidth connections between a source server and CDN edge data centers are not always available. In fact, using multiple CDN services, e.g., AWS CloudFront and Akamai, for better coverage is an increasing popular approach.)

Optimizing CDN technology requires a large number of parameters and strategies to achieve high performance. The caching strategy (what should be saved at the edge and for how long) is crucial and dependent on context. Artificial Intelligence methods can be used to decide what and where to pre-position data or to let the data be cached at the node only after the first client request. The proxy mapping by location may be modified to include bandwidth, edge node utilization, and data availability. CDN technologies are a rapidly evolving field with an ever increasing number companies (e.g., Akamai, Amazon Web Services CloudFront) expanding their edge networks.

CDNs are good for reducing traffic and latency from the content source server. But they are still limited with respect to regional latency and bandwidth. Some companies that value low latency above all else are placing dedicated edge servers right in the Point of Presence (PoP) of the Internet Service Provider (ISP) that connects the clients to the Internet. This might work with large ISPs such as Comcast Xfinity and ATT. However, there are hundreds, maybe thousands, of smaller ISPs so full coverage with dedicated edge servers does not scale well.

SUMMARY

Apparatuses, methods and infrastructures for interacting with SNDs and SLANs are described. In one embodiment, a network arrangement comprises: a plurality of access points that are part of one or more existing networks and operable to individually address and communicate with each other to form a local area network (LAN) to transfer data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more existing networks, wherein each access point of the plurality of access points is associated with a cache to store content that may be forwarded, via one or more direct point-to-point transfers between access point pairs of the plurality of access points, to other access points in the plurality of access points in response to transfer request messages to transfer the content; and wherein each access point has a mapping indicative of a first set of one or more access points of the plurality of access points, if any, for which said each access point is to repeat messages and, for each access point in the first set, a first list of one or more access points in the plurality of access points from which the messages are to be forwarded once received if necessary, with no two access points in the plurality of access points that are directly connected to a third access point repeating a same message to the third access point.

These also include methods and apparatuses for connecting SNDs to create SLANs, finding cached content, managing the number of hops between SNDs, managing content via Blockchain ledgers and Bit Torrent, using smart speaker devices, interacting with SLANs without an SND, interacting with DVRs, behaving as a virtual DVR, and hosting content on the SLAN.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will be understood more fully from the detailed description given below and from the accompanying drawings of various embodiments of the invention, which, however, should not be taken to limit the invention to the specific embodiments, but are for explanation and understanding only.

FIG. 1a is a diagram illustrating typical Internet networking.

FIG. 1b is a diagram illustrating CDN edge networking.

FIG. 1c is a diagram illustrating PoP edge networking.

FIG. 1d is a diagram illustrating Special Local Area Network edge networking in accordance with one embodiment.

FIG. 2 is a diagram of one embodiment of a SLAN.

FIG. 3 is a block diagram of one embodiment of a Special Network Device.

FIG. 4 is a flow diagram of software components in the SND.

FIG. 5 is a flow diagram illustrating one embodiment of communication between nodes in a SLAN network using the Zero Configuration Network protocol.

FIG. 6 is a flow diagram illustrating an embodiment of communication between nodes in a SLAN network using a central server.

FIG. 7 is a communication diagram of one embodiment of a no hop and multi-hop search.

FIG. 8 is an example of a SLAN network for the purpose of creating a topographical mapping of the SND nodes in a SLAN.

DESCRIPTION OF EMBODIMENTS

In the following description, numerous details are set forth to provide a more thorough explanation of the present invention. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention.

Overview

Embodiments of the present invention are predicated on a number of existing Special Network Devices (SND) Wi-Fi access points physically close enough with each other to communicate directly (e.g., within about 50 meters). These are the nodes in a Special Local Area Network (SLAN).

These SNDs (via the embodiments described below) connect to one another, forming a SLAN independent of any connection to the Internet or other private network. These SNDs intelligently cache data that passes through (or is proactively requested by the SND). Additionally, in some embodiments, the SND has access to data on connected client devices.

Simultaneously, these SNDs also serve the traditional function of connecting wireless clients to the Internet or other private networks. However, now the wireless client can also benefit from the collective caching of the SLAN. If a data request from a wireless client can be served from the data cached in the SLAN, that access is generally faster and has no impact on (and does not suffer from) Internet traffic.

Embodiments of the present invention have one or more advantages. First, embodiments of the invention help to improve network performance, especially within the so called “last mile”—the connection between the ISP or private network (a conventional network independent of the Internet) and the local device—in certain situations. Embodiments of the invention have the potential to reduce bandwidth problems enabling better performance for video and other large data transfers and perhaps also improve continuity and reduce latency.

Second, embodiments of the invention create an entirely new layer in this data caching approach—creating a Special Local Area Networks (SLAN) and caching right at the Wi-Fi access point physically located in a home or business. While many or all of these nodes are also connected to a central network, or networks (e.g., the Internet via an ISP), the network is able to transfer data between the networked nodes independently of that central network.

In highly populated areas, such as business districts and urban and suburban neighborhoods, there is often multiple Wi-Fi access points (or hotspots or IEEE 802.11x “Wi-Fi” networks) that are within range and broadcasting their name (Service Set Identifier, SSID). Most of these Wi-Fi access points require a password to authenticate that the client is allowed access. In one embodiment, the client device sees these Wi-Fi access points and the Wi-Fi access points themselves are close enough to connect to each other.

In one embodiment, all the Wi-Fi access points that are capable of the functionality described below and that are physically located close enough to connect to each other, do so forming a SLAN.

In one embodiment, these Wi-Fi access point devices are called Special Network Devices (SNDs), and the functionality of a SND includes caching hardware and software for handling data; discovering other SNDs; networking with other SNDs forming a SLAN; message passing and responding within a SLAN; data transfer within a SLAN; as well as functioning as a traditional Wi-Fi access point for client devices and communicating with the ISP or private network. In some embodiments, this functionality is achieved with conventional computer running custom software connected to a traditional Wi-Fi access point device. In other embodiments, integrated SND hardware with these specific capabilities is employed.

In one embodiment, the networking between SNDs is embodied in a sideband signal (a dedicated separate Wi-Fi signal for this purpose). For security, in one embodiment, this sideband signal is limited to SNDs by hardware and/or software authentication. In other embodiments, the SND connects via switching between Wi-Fi signals or other wireless and/or wired communication functionality.

In one embodiment, one SND may be connected to multiple other SNDs forming a SLAN. However, these are not closed mesh networks (e.g., not a private network) since the SNDs, in one embodiment can self-join and self-organize into a network. In one embodiment, one SND is capable of connecting directly to N other SNDs. Those N SNDs are not necessarily all connected to each other. This first SND acts as a bridge node, or repeater, or more specifically a Wi-Fi repeater, between the other SNDs that are not directly connected. Likewise, some of the N other SNDs might be connected to SNDs that the first SND is not. Thus, those SNDs act as bridges, or Wi-Fi repeaters, between these SNDs. Messaging and data is transmitted by hopping between these nodes. Theoretically, this network could extend to the physically furthest SND that can be connected to at least one of the others, though the costs for multiple hops between nodes in a network may degrade performance.

In one embodiment, the SNDs cache large files or objects locally, especially multimedia content, based on heuristic and learned algorithms. In one embodiment, these algorithms are initially derived from those employed with CDN and other caching strategies, and are expected to evolve for the characteristics of a given SLAN. A common example of a caching strategy is the “least accessed” principle. As data is accessed, timestamps are updated. When memory is needed for new data the least accessed data is deleted first.

With an arrangement of SNDs, when a client requests large data, the SLAN is queried to see if that data is available locally, and if so, the client request is served locally. Caching files or objects at the Wi-Fi access point level of the network has many of the same bandwidth and latency reduction advantages as CDNs and PoPs. It would certainly help with popular live broadcasts and on-demand binging, especially during the network congested evening hours. (Note that the advantage of embodiments of the invention for interactive video which requires low latency is not well known.)

Embodiments of the invention also facilitate streaming video. One SND can receive streaming data and transfer that data throughout the SLAN for several clients, reducing the burden on the ISP, Internet, and/or private network. There are practical limitations in performance, however. For example, SLAN nodes (SNDs) connected via Wi-Fi repeaters would require retransmission of packets, creating some amount of congestion in the local spectrum. Nevertheless, embodiments of the invention improve the performance of streaming popular content.

The description and figures below describe the steps to create such a network and deliver data, especially large data such as video, across it. In one embodiment, these steps include:

-   -   forming a SLAN by direct networking between Wi-Fi access points         (SNDs);     -   addressing the SND nodes in the network using multicast DNS, or         similar, protocols;     -   searching for content on the SLANs without interaction with an         ISP or private network;     -   transferring content directly between Wi-Fi access points (SNDs         and attached clients) without interaction with an ISP or private         network;     -   data caching and partitioning right at the Wi-Fi access points         (SND); and     -   data and network security, tracking, and analytics without         interaction with an ISP or private network.

The description of embodiments of the invention characterizes a SLAN created by replacing existing, or adding new, Wi-Fi access points with SND capable hardware and software. It assumes deriving the benefits from the existing topology of these points, e.g., at homes, at coffee shops, at work, at airports. However, one skilled in the art could imagine placing these devices in strategic locations to “complete” the SLAN and provide just this type of “last foot” networking benefit. In other words, embodiments of the invention include both ad-hoc creation and designed creation of this SLAN.

Also, embodiments of the invention are not limited to the ad-hoc creation of these networks to (relatively) physically fixed Wi-Fi access points. One skilled in the art in view of the present disclosure can imagine these networks being spontaneously created with mobile devices that may also have the required functionality.

Description of CDN, Pop, and LANs with Wi-Fi Access Points

FIG. 1a is a diagram of an example exchange over the Internet. The Source Server 101 contains the origin content, e.g., video. The Client Device 105 requests the content (after an appropriate authentication and transaction for a given business model). Physically, the Source Server 101 and the Client Device 105 could be many kilometers apart, even continents away. There is no direct connection between the Source Server 101 and the Client Device 105, as that simply would not scale.

Traditional networking partitions the data into packets. Each packet is sent to an Internet Node 102 and is repeated to another node and so on along a Data Packet Path 106 until the packet is received by an Internet Service Provider (ISP) 103 and then the Client Device 105. The path of the data packet could require multiple hops (i.e., passing through several Internet Nodes 102). The Internet Nodes 102 can be all over, including all over the globe. Furthermore, each packet in a data transfer might take a different path. In one embodiment, the path depends on sophisticated algorithms, known to those skilled in the art, that depend on factors such as, but not limited to, bandwidth, availability, and connectivity at the nodes. While these algorithms attempt to reduce, and potentially minimize, the packet path, the Source Server 101 cannot predict, or demand, low latency or sufficient bandwidth. Also in this model, the Source Sever 101 itself could be a bottleneck if there is a great demand for its content.

FIG. 1b shows an existing method to reduce latency and network Internet traffic (e.g., between a PaaS or IaaS providers regional nodes), that includes the Content Delivery Network CDN Edge Servers 107. By moving the data directly from the Source Server 101, often using high bandwidth, predictable and/or dedicated networking, and caching the data in geographically distributed CDN Edge Servers 107, the data is physically closer to the client's Internet Service Provider 103.

The main advantage to using CDNs is the data propagation to the geographical edge of the network. The content is closer and therefore faster, to get to the client. Data propagation of static content takes time though. In many cases, data is propagated (proactively pre-loaded or updated) before the first access.

With effective caching and prediction strategies, CDNs significantly reduce bandwidth stress on the source servers and latency to the client. Now the Data Packet Path 108 is significantly shorter and, perhaps, more predictable. This is the most common method that large video content providers use today.

Yet high latency and bandwidth demands persist even with CDNs. So a few companies like Twitch, Amazon's video game streaming service, have moved servers even closer to the edge by installing them in some ISP's Point of Presence (usually last node before the client). FIG. 1c shows this variation with a predictable or direct network connection between the Source Server 101 and an ISP 103. A dedicated server, facilitated by the content source company (most likely), is located in the ISP data center 103. Now the Data Packet Path 109 is even shorter and more predictable. However, this solution is expensive and hard to scale, and thus, only done by a few services that can charge a premium for improved customer experience.

Embodiments of the invention have two additive advantages that can supplement any of these networking approaches. First, it creates a local area network with data caching even closer to the client device. Second, serving requests for data that are cached locally can be executed without involving the Internet, or even the ISP.

FIG. 1d shows the SLAN 112 centered on the specific SND 113 connected directly to the Client Device 105. Given a specific request for data by the Client Device 105, it is discovered (by methods described below) that the data is located on specific SND 114. Using this information, the data is then transferred to the specific SND 113 and then directly to the Client Device 105 via the Data Packet Path 111. Note that this path does not involve the ISP or the Internet.

Definitions

Note that this disclosure will use the present state-of-the-art method of wirelessly connecting popularly called Wi-Fi (a trademarked phrase representing the family of IEEE 802.11x standards). While Wi-Fi is one method for wireless networking, one skilled in the art can imagine successor technologies (wired, wireless, or contact) being used for the purposes of embodiments of the invention. Furthermore, there are other contemporary wireless technologies (e.g., Bluetooth, Near Field Communication, etc.) that could be used. Finally, embodiments of the invention could also work with a mixture of technologies for networking, both wired and wireless.

For descriptive purposes, the term “Wi-Fi access point” is used to refer to a device that is connected on one side to the Internet (e.g., via an ISP and an appropriate modem) and on the other side to client devices via Wi-Fi. However, the term “access point” is a more general description that implies network access regardless of the wireless or wired protocol. In one embodiment, an access point is any last point on the edge of a network that enables client devices to connect directly. Note that a single physical device can offer several Wi-Fi signals. Also note that a single physical device can have multiple Wi-Fi signals each with a different Service Set Identifier (SSID).

A Wi-Fi repeater is a Wi-Fi access point that repeats packets from other Wi-Fi access points. In one embodiment, Wi-Fi repeaters are used to bridge communication between a client device and the access point with a connection to a modem (and the ISP or private network), thereby “extending” the Wi-Fi range. In one embodiment, Wi-Fi repeaters use the same SSID as the originating Wi-Fi access point.

A single point in a network of computing devices is called a node. Traditionally, Wi-Fi access points or Wi-Fi repeaters are the last node in the network before the client device.

Content is data that is generally large and has some persistence value (i.e., it is potentially still valuable at a later time). An excellent example of content is video data. Video data tends to be large, may be requested several times, and does not need to be refreshed. Examples of data that is not considered content in this disclosure are metadata describing content, messages passed between devices, request calls, and other Application Programmer's Interface (API) related data. Note that this non-content data can be repeated by SNDs.

Description of Embodiments of a Special Local Area Network (SLAN)

In one embodiment, Special Network Devices (SNDs) connect and interact with each other, thus acting as nodes in the Special Local Area Network (SLAN). The definition of the SLAN for purposes herein is the network created by all of the SNDs that are able to address each other. In one embodiment, the addressing is direct via the Wi-Fi signal. The SLAN can extend beyond the Wi-Fi signal range if there is one, or more, bridge SNDs that can act as Wi-Fi repeaters. Any data packet would “hop” through these bridge SNDs. Conceptually, this network could extend to a great geographical distance with many SNDs if there are bridge SNDs in the physically correct locations.

In FIG. 2, the SND 200 is connected via one or more Wi-Fi signals to the SNDs 201, 202, 203, 204, and 205 creating the SLAN 210. SND 201 is connected via Wi-Fi signal to SNDs 200, 202, 205, 206, 207, 208, and 209 creating the SLAN 211. Using the connection between SND 200 and SND 201 as Wi-Fi repeaters, all of the SNDs are connected, either directly or with one hop, to each other. Thus, SLAN 210 and SLAN 211 are joined into a single SLAN.

Methods for discovering and connecting between SNDs and creating SLANs are described below. Using methods described below, the SND requests information about all the SNDs on the SLAN. Depending on the embodiment, these connections are described and, in some embodiments, shared using structured lists (such as CSV, JSON, etc.) or using local or global databases (e.g., Graphing Databases, Relational Databases, NoSQL databases, etc.). In other embodiments, the addressing is not shared until there is content found. This is also described below.

Table 1 shows a textual description of the connections between the SNDs in FIG. 2, as an example embodiment. Any two SNDs that are Wi-Fi signal connected to each other can pass data directly. Otherwise, one or two hops are required. For example, as shown in FIG. 2, SND 203 can communicate with SND 200 directly. However, for SND 203 to communicate with SND 205 the packets are repeated by SND 200. For SND 203 to communicate with SND 209 the packets are first repeated by SND 200 and then a second time by SND 201.

TABLE 1 SLAN connection description SND Wi-Fi signal connected SND 200 201, 202, 203, 204, 205 201 200, 202, 205, 206, 207, 208, 209 202 200, 201 203 200, 204 204 200, 203 205 200, 201 206 201 207 201 208 201 209 201

There are various ways to represent this table in database form, for example node and edge descriptions in a graphical database. With the right representation it is possible to discern how to address all of the SNDs in the SLAN. However, it may not be necessary for the SNDs or a network controller to know this network topology to find or transfer content around the SLAN. This is described below.

Hardware and Software for Embodiments of a SLAN

For descriptive purposes, the term “Special Network Device” (SND) is used to refer herein to a physical (or virtual) device that has all of the functionality to participate in a SLAN. In one embodiment, an SND may or may not have a connection to the Internet via a modem; one or more Wi-Fi signals; data storage capability for caching content and partitions of content; and computational hardware and software sufficient to join the network, search for content, and transfer content. While all of this could be manufactured in a single purpose-built enclosure, it could also be constructed using conventional modems, Wi-Fi access points, and computers. To be clear, in one embodiment, a SND is a traditional Wi-Fi access point with additional hardware and software needed for the SND functionality described herein.

FIG. 3 shows a block diagram of the elements of a SND. ISP Connect 300 is the connection to the Internet Service Provider or private network. This connection could be directly wired or wireless using standard hardware, software, and protocols. The Modem/Receiver 301 receives the data and translates from network signals to packets and understands these packets. The Router 304 sends the packets to different devices via Wired Connect 307. The Router 304 is optional for SNDs but shown here. An Internet connection is not required for a SND. It can connect to other SNDs, and/or act as a repeater for a traditional Wi-Fi access point, and still have the advantages described herein.

The Main Wi-Fi Signal 305 transmits and receives data via Wi-Fi 308. In one embodiment, Main Wi-Fi signal 305 interacts with a client device. Optionally, Main Wi-Fi Signal 305 uses multiple separate Wi-Fi signals with separate SSIDs. In one embodiment, each of the multiple separate Wi-Fi signals is at different frequencies, e.g., 5.0 GHz and 2.4 GHz. In one embodiment, SNDs behave exactly like conventional Wi-Fi access points for normal requests.

The Connection Compute and Store 302 is the computer or other processing logic (e.g., one or more processors, controllers, execution units, etc.) that controls the SND functions like network discovery, content search, content caching, and controlling the transfer of content and content pieces. In one embodiment, the Connection Compute and Store 302 comprises connection logic. The connection logic comprises hardware (e.g., circuitry, digital logic, etc.), software, firmware, or a combination of all three. In one embodiment, the connection logic is coupled to the first and second communication interfaces (e.g., Wi-Fi and other communication interfaces described above), and a content cache (e.g., 303) to initiate a wireless connection with one or more access points in the plurality of access points by itself using the second wireless communication interface to transfer desired content cached by individual access points of the of the SLAN.

The Content Cache 303 is memory (volatile or non-volatile) where content is accumulated and stored temporarily. The Side Wi-Fi Signal 306 transmits and receives data via the Side Wi-Fi 309 and is dedicated to SLAN traffic. This function is employed in some embodiments, but not others, as is described below.

In some embodiments, an optional Global Positioning System 310 is included in the SND. In one embodiment, the global position is used when evaluating the analytics generated by the SND and SLAN.

In one embodiment, all of this functionality is assembled in a dedicated piece of hardware or is implemented using an off-the-shelf computer, modem, and Wi-Fi access point hardware except where noted herein.

FIG. 4 shows the software for one embodiment of the SND. These software modules can be embodied in several common methods such as APIs, SDKs, or one or more programs. In one embodiment, the Modem, Router, access point, Wi-Fi repeater Core Software 400 is the typical software present in current modem/router/Wi-Fi access point and Wi-Fi repeater device except where noted herein.

In one embodiment, the Server Software module 407 is a Hyper-Text Transfer Protocol (HTTP) or web server (e.g., Apache HTTP server) and is common in many modem/router/Wi-Fi access point devices. This enables the device to be accessed via protocols like HTTP with settings presented to users as a webpage. Some embodiments use this software for communicating with other SNDs as well as the ISP and clients.

The SND Discovery and Connect module 401 handles the authentication for connecting to other SNDs and enabling other SNDs to connect each other and other devices. In one embodiment, the SND Discovery and Connect module 401 employs a network configuration protocol, such as, for example, but not limited to, Zero Configuration Network also called Bonjour® (registered trademark of Apple, Inc.), to query the network for device capabilities, e.g., which devices are capable of SND functionality.

In one embodiment, the SLAN Local DNS Manage module 402 uses a protocol such as multicast Domain Name Server (mDNS), which is part of the Zero Configuration Network protocol, to discover, record, and share the identities of the SND on the SLAN. This is where the description of the network in database form can be (optionally) created and stored (see Table 1).

The SLAN Content Search module 403 searches for content requested by the client device.

The SLAN Content Transfer module 404 transfers and/or repeats packets to affect the transfer of data from the SND in the SLAN where the content is found to the client device.

The SND Content Cache module 405 strategically stores content, or pieces of content, that are passed through the SLAN. The strategy for caching content depends on a number of factors such as the content's novelty in the SLAN, popularity, size, frequency of access, and a number of other factors. Caching algorithms that may be used are known to those skilled in the art. In one embodiment, both heuristics and machine learned caching strategies are employed. The efficacy of the caching strategy is recorded by several metrics which are then used to improve the strategy. That measurement and learning functionality is part of this software module, in some embodiments. In other embodiments, there is a central server that collects the analytics data (see below) and performs the strategic modifications, either in real-time or off-line.

The SND Analytics module 406 reports the metrics for the caching and other information pertinent to the caching strategy, network topology, or even the business model.

The Global Position System module 408 reads and shares the global coordinates of the SND with the SLAN and network controller(s). In one embodiment, this optional component is used for analytics.

In some embodiments, a client device is connected to a traditional Wi-Fi access point and a computer is used to simulate or replicate the functions of an SND. In this case, the client device's software functionality is similar to that of the SND.

Forming a Network of SNDs

In one embodiment, SLANs are formed when at least two SNDs connect to each other. All the SNDs network together in a mesh formation.

There are at least two different types of embodiments in which SNDs discover and join a SLAN. The first type of embodiment is a self-organizing network. The SNDs form a peer-to-peer network using local discovery such as, for example, but not limited to, Zero Configuration Network, Apple's Bonjour, multicast DNS, and other similar protocols.

In an example embodiment of the network organizing process, referring to FIG. 5, an individual SND starts the process by looking for like devices by searching for specific SSIDs 500. These SSIDs are usually hidden, i.e., the SSID is not broadcast. (While hiding SSIDs is a common practice for Wi-Fi security, the goal here is to not confuse users with inaccessible SSIDs while they are trying to connect a client device.) In some embodiments, with the SSID known, the SND attempts connect directly using either traditional software authentication (SSID plus password). For greater security, in one embodiment, the SND has a secure communication with a server using a protocol such as Transport Layer Security (TLS). The server delivers the specific password for the SSID (presumably unique to a single SND). Other forms of secure authentication may also be employed. The first SND then connects to the second SND 510.

Once connected, the SND can interact with the other devices, at first, via a system like Apple's Bonjour. The SND creates a name for it (assuring that it is unique by querying the network) and publishes that name for the other SNDs on the local network 515. In one embodiment, the SND uses its unique Media Access Control (MAC) address for a name. The SND can query for the service records (e.g., capabilities, names, addresses, ports, etc.) of all the other devices on the SLAN 520. This will cause one or more of the SNDs on the network to respond with these records 523. In many embodiments, there are multicast DNS caching schemes that reduce the number of SNDs that need to respond. Also, such a request can be used for the other SNDs to update their own records. At this point, the new SND has enough information to formulate its own local records 530.

There are ways that some of the embodiments of this invention might differ from features of standard implementations.

First, in one embodiment, the effective SLAN network only includes SNDs so all devices would have the capability when queried. In some embodiments, to reduce chatter, the SNDs might have an inherent order (alphabetical by name, numerical by IP address, age by time of connection, etc.) with which to respond. The first on the list responds with the entire record set for the whole network. If that SND does not send a response within some timeout, the second on the list sends it, and so on.

Second, in some embodiments, there is a list of connections in the network that denotes how many hops are required to reach a device is sent. Conversely, a table of information similar to Table 1 is sent to the SNDs in the SLAN.

Another difference in embodiments is that a similar broadcast protocol is used to search for specific content on the network. This is described in greater detail below.

In one embodiment, the SLAN includes a network controller and is a network controller assisted network. In one embodiment, the network controller is a typical network server, usually located on the Internet or private network, often at the ISP. This network controller has the capability for receiving, storing, and delivering information about SLAN locations, SSIDs, authentication passwords, and the pertinent information for forming the network. In one embodiment, the network controller also records the mapping of cached content and control caching decision. This is described below.

In one embodiment, a SND communicates with a network controller to find other SNDs and to join the SLAN. In one embodiment, this server is located in a specific SND or permanently attached client device that is designated as the local server. In this case, it is still necessary to access the server via the ISP, Internet, or private network to establish the first connection. In other embodiments, this server is located at the ISP or elsewhere in the Internet or private server.

With some embodiments, the network controller performs the role of DNS as well as secure password source. Referring to FIG. 6, the new SND searches for SSIDs, hidden and others within range 600. The SND sends this list, securely, to the server 605. It is then the server's responsibility to figure out which of these SSIDs are SNDs and which is the most appropriate for the new SND to connect to. The server then sends that SSID and the password, securely, to the new SND 607. The new SND connects to the other SND 610 and sends the server a success or failure message. The server then assigns a name and address for the new SND 615. The new SND records that name and address for responding to queries in the future.

SLAN Addressing and Multiple Hops

In order for the SNDs to communicate with each other, in one embodiment, they have unique identifiers (such as Media Access Control address or MAC address) and domain names (or IP addresses assigned using mDNS). The description above shows how these names are assigned, in some embodiments via peer-to-peer methodology with the list stored locally and in other embodiments with the assignment and list handled by a remote server.

With the DNS or SLAN network list, any SND is able to pass messages and/or content directly with each other using traditional protocols such as, for example, File Transfer Protocol (FTP) and HTTP. In some embodiments, however, there is a difference between this arrangement and a regular network. The SNDs in these embodiments are aware of how many (minimum) hops away another SND is. Thus, it is possible for an SND to evaluate whether it is more efficient to request content from a distant, multiple hop SND or directly from the Internet. For the purposes of this disclosure, this is called multi-hop access for multiple hops (Wi-Fi repeater) versus no hops.

Note that while Wi-Fi repeater technology is useful for extending the physical range of a Wi-Fi access point, it does so by repeating the packet and using more time and more wireless bandwidth. This should be considered dynamically when judging whether to request content that requires multi-hop access.

Data Discovery and Search

In one embodiment, when a client requests to access content (e.g., play a movie) the first step is authenticating that the client has permission (e.g., has paid for the movie). That authentication process is beyond the scope of this disclosure; however it can be assumed that either there is an interaction with a paywall server or the rule-based player technology such as described in U.S. Pat. No. 8,751,795 B2, “Secure Transfer and Tracking of Data Using Removable Non-volatile Memory Devices”, incorporated herein by reference, is used. In one embodiment, at a minimum, the request has a global unique identifier (GUID) for the session and a content identifier for the content.

To find content, or all the pieces of content, multiple types of embodiments, such as peer-to-peer and network controller, may be employed.

In peer-to-peer embodiments, the SND connected to the requesting client broadcasts the request to the SLAN similar to the Zero Configuration Network protocol. Any SND node in the network with the entire content, or a piece of the content (e.g., fragments of the content identified with metadata that enables reconstruction), responds to the request describing the content.

Note that in these embodiments, no network list is necessary. The Zero Configuration Network protocol is extended to include searching on specific content. In this case, it is unnecessary to know either the topology or address list of the SLAN ahead of time. The response to the request includes the service record and ultimately the address of the SND with the requested content.

In one embodiment, the Apple Bonjour protocol is used to search for content on the network. The relationship between Internet Protocol (IP) address and Apple Bonjour Service Record is described in publicly available the Apple Bonjour developer's documentation (https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/NetServices/Intro duction.html#//apple_ref/doc/uid/TP40002445-SW1). Using the API library such as Apple's NSNetService, an SND can publish the services available. In this case, the services are pieces of content. In one embodiment, the name of the service type is slan-content. TCP and the name of a give service is <content-id>.

In an alternate embodiment, the individual SND nodes are queried directly (one by one) using the local domain name stored on the requesting SND. In an alternate embodiment, the local domain names for the SND nodes are stored on a server (as described above).

All responses are passed back the originating SND with the description of the content piece available and the addressing required to access it.

FIG. 7 shows the two SLANs from FIG. 2. In this case, when SND 700 broadcasts a content search message to all the SNDs 701-709, only the SNDs with that content responds.

In another embodiment, a network controller system similar to BitTorrent is used. BitTorrent is a peer-to-peer content delivery system where content, or pieces of content, are stored on client devices. The Internet Protocol address and location of content and content pieces are listed on a network controller, called a Tracker. With BitTorrent, the content or pieces of content can be located in client devices anywhere around the world, called a Swarm. To access the content or piece thereof, the BitTorrent Tracker informs the requesting client of the address(es) for the content and the client requests content directly.

Some embodiments described herein can use the same approach. A network controller accounts for the address and location of content cached on SLAN. When an SND requests content the network controller informs that SND of the address(es) for the cached content in the SLAN and the SND requests content directly.

Embodiments of this invention that use this approach have a few advantages over BitTorrent. First, with BitTorrent the content is often partitioned into pieces specifically to compensate for the unbalance bandwidth offered by many ISPs. That is, the upload bandwidth is often inferior to download bandwidth. If several pieces are requested at the same time, the additive speed of multiple uploads can come closer to matching the requesters download speed. However, with the networking arrangement described herein, the transfer speed between SNDs is more or less balanced. Therefore, fragmenting the content into pieces does not matter in terms of unbalance bandwidth. (There are other reasons to fragment content into pieces. For example, fragmentation might distribute the caching burden and perhaps the local Wi-Fi congestion throughout the SLAN.)

Another advantage over BitTorrent is that the cached content is accessed within the SLAN. There is no need to access the ISP, Internet, or private network. Thus, the content access will be faster and not contribute to ISP, Internet, or private network bandwidth congestion.

Data Transfer

In one embodiment, data transfer is achieved using Internet Protocols routing between the SND nodes in the SLANs. There is no need, in most cases, to route the content through the ISP or other parts of the greater Internet. It is here that the great bandwidth and latency reductions are achieved.

In one embodiment, the SND requests content from another specific SND using a Hypertext Transfer Protocol (HTTP) GET or POST command. The minimum data in the Application Programmer's Interface (API) call is the following:

Request: URL: <SND with the cached content Universal Resource Locator (URL)>

Endpoint: /content_transfer

Parameter: content_id<string> identifier for the requested content

Response: Parameter: metadata <json> includes all metadata for the content

Content data <binary> file

Note that the content or pieces of content can be cached on an SND node or on a client device attached to an SND node.

Content partitioning strategies, similar to those employed in BitTorrent (pieces), can reduce the caching burden on single nodes and might also reduce the content transfer burden of those nodes. These strategies are employed when dictated by topology of the network, size and popularity of the content, and other factors that are determined.

In one embodiment, routing between the nodes uses traditional network techniques that optimize data packet paths give topology and current usage. There are a number of networking strategies that can be learned given the topology of the network, usage patterns, and requests underway. Much of the network optimization and content caching algorithms used in LANs and the Internet can be exploited with SLANs.

As described above, in one embodiment, the requesting SND sends a Zero Configuration request for specific content and receives either no response or one or more responses. There are several ways for the requesting SND to determine the best source for transferring the content.

In some embodiments, the requesting SND uses Ping, a known call and response software function, to determine the latency between the requesting SND and the SND or multiple SNDs with the content. The source of the content with the lowest latency (or other factors like bandwidth capabilities) is the SND chosen to transfer the content. In some embodiments, the requesting SND also Pings the ISP, Internet, or private network. If that Ping is the lowest latency (or other factor) then the content is downloaded directly.

In some embodiments, the requesting SND requests content from all the sources. The first content packet received is sustained. The other requests may be cancelled.

In some embodiments, the topography of the network, such as that defined, for example, in Table 1, is used to predict the transfer performance based on the number of Wi-Fi repeaters, network hops, the content will have to navigate. This is a more complicated method than the two described above and only estimates the latency of a transfer.

Data Caching

The description above explains that content, or content pieces, are cached locally on SNDs. It has been stated that there are a number of ways to determine what content to cache and for how long. All of the extensive list of technologies, known to those skilled in the art, for optimizing content caching strategies may be used in embodiments described herein.

In one embodiment, however, the caching in the SLAN has a somewhat uncommon (but not unique) characteristic. The content cached across a SLAN is actually a distributed cache with the content, or content pieces, cached physically one or more of the SNDs in the SLAN. These SNDs are, in many embodiments, crowd-sourced in terms of location, capability (e.g., cache size, transfer speed, etc.), and persistence (i.e., online uptime may vary). Thus, there are challenges to create a coherent cache strategy for a SLAN.

There are a few solutions to this caching challenge. In some embodiments, the individual SNDs simply ignore any other SNDs when caching content. Presumably, a request for content on the SLAN was made without success before a request to the ISP, Internet or private network. Thus, it can be assumed that the new content—acquired not from the SLAN but from the ISP, Internet, or private network connection—is unique.

In one embodiment, when the SND receives a request for content from the client device it acts as a proxy server and requests the content first from its own cache and then from the SLAN. If the content is not found then the SND requests the content from the content server on the Internet. When the content response is delivered, the SND then caches the content locally.

In other embodiments, a network controller is used to direct specific SNDs to cache specific content as it passes through SNDs. In the response, the network controller includes a flag or other information that instructs the SND to cache the content in the response. In yet other embodiments, there are messages passed from the cached content source SND along with the content suggesting information (e.g., locations, number of hops, etc.) that would lead an SND to cache content or not.

In addition to caching content on SNDs, in some embodiments, the content or content pieces are located and accessed on client devices that are connected to SND nodes in the SLAN. In these embodiments, the content on the client device is considered a virtual extension of the SND cache. Referring again to FIG. 2, in one embodiment, content that resides on the Client Device 212 is considered part to the cache on SND 204. When SND 204 receives a request for content, it then queries and requests the content from Client Device 212 and then passes it on to the original requester. Of course, content on the client device is controlled by the user and may not be available with the same consistency and constancy as the SND cache. The user might delete the content or disconnect the device at any moment.

In some embodiments, certain content is “preloaded”, in that it is proactively downloaded and cached at some SND on the SLAN. In one embodiment, the network controller uses an API designed to instruct an SND to receive and cache content. In one embodiment, the network controller uses the Internet Protocol (IP) address of the SND in a Hypertext Transfer Protocol (HTTP) POST request to instruct the SND to cache the content and provide the content. In other embodiments, different APIs are used for this function. Which content is preloaded is a function of several factors. For example, in one embodiment, the content is predictive by artificial intelligence algorithms analyzing the consuming behaviors of the users on the SLAN. In another example, the content is part of a series of content (e.g., a television series) for which the user has subscribed. In yet another example, the content is part of a promotional package of content from a content provider (e.g., the latest offerings from Home Box Office).

In some embodiments with preloaded content, there is a network controller that knows the SLANs to which certain users are often connected. The server proactively requests that a SND in that SLAN download the content, or it transmits the content directly to the SND. This is also the case in embodiments where the SLAN is a virtual content kiosk (described below). In other embodiments, the SND proactively requests any speculative content, not already present on the SLAN, from content providers when a user connects.

There are many algorithms, both learned and heuristic, for determining which content persists and which is deleted from a given SND's cache. A common heuristic, previously mentioned, is replacing the least accessed content with the new content. However, preloaded content, especially for virtual content kiosk functionality, might be subject to different criteria.

Data and Network Security

Embodiments of the invention use traditional network security for data traffic. For example, including Transport Layer Security (TSL) and Secure Shell (SSH) can be used with certificates either preinstalled in, or requested by, the SND.

Content security is achieved (in general) by encrypting the content at the source. The SNDs, generally, do not decrypt content. The SNDs only need to know the identity of the content or content pieces to properly cache and deliver the content.

Content security can be achieved by a variety of methods. One embodiment uses the techniques found in U.S. Pat. No. 8,751,795 B2, “Secure Transfer and Tracking of Data Using Removable Non-volatile Memory Devices”, incorporated herein by reference. This includes a dedicated player with Digital Rights Management encryption, tracking, and rule-based playback. In this embodiment, only the authorized player can decrypt and play the content.

Local Peer-to-Peer Versus a Network Controller

As described above, there are different embodiments possible for connecting to a network, searching for data, and for caching decisions. In each case, these functions can be performed locally or via peer-to-peer. Alternatively, these functions can be performed with using a network controller.

In one embodiment, when connecting via peer-to-peer, the SND searches for a hidden SSID representing the SLAN signal and joins that network. In one embodiment, when connecting with a network controller, the SND uploads the list of SSIDs that it can see (and optionally its location) and the network controller suggests the SSID and password to join.

In one embodiment, when searching via peer-to-peer, the SND broadcasts a modified Zero Configuration message to the network and SNDs with the content respond. In one embodiment, when searching with network controller, the SND request content addressing instructions from the network controller which acts as the search engine for the SLAN.

In one embodiment, when caching via peer-to-peer, the SND makes the decision to cache the content based on whether or not that content is on the SLAN somewhere else (as well as a number of other possible parameters). In one embodiment, when caching with a network controller, it is the network controller that signals to an SND which data to cache.

In the descriptions of the embodiments, the functionality for connecting, searching, and caching have been presented as either peer-to-peer or facilitated with a network controller. However, in many embodiments the SND is capable of either method for one, two, or all three of the functions. Furthermore, these functions do not have to be performed the same way with every SND in an SLAN. Nor do these functions need to be performed the same way every time by the same SND. These functions can co-exist in a heterogeneous mix of SNDs.

Likewise, embodiments of the network controller(s) can be different. The connection, searching, and caching functions do not need to be performed by the same network controller or even in the same location of logical domain. A heterogeneous mix of network controllers can exist.

In one embodiment, the network controller function is physically instantiated in an SND. That is, the cached content locations, SND addresses (or multicast DNS), and APIs for caching and pre-loading content are performed by an SND. The SND is either connected directly to a server or a server is built into the SND. This embodiment has the advantage that the network controller is on the SLAN side of the ISP and no communication through the ISP is necessary. Otherwise, the same API calls for searching content and caching or pre-loading content work as described above.

SLAN Performing the Delivery of a Kiosk or SpeedSpot

In the embodiments described so far, the client device is assumed to be connected to the traditional Wi-Fi access point signal broadcast by the SND, and this client device is assumed to have connected to this Wi-Fi access point in the traditional way, i.e., selecting a SSID signal and entering the password. However, in some embodiments, a SLAN and/or a SND performs the functions of a content dispensing “kiosk” or SpeedSpot as described in “Content Distribution Systems and Methods,” U.S. Pat. No. 10,104,046 B2, incorporated herein by reference. In this case, the kiosk consumer client device connects and performs functions using an application on the kiosk consumer client device.

In one embodiment, the client device running the application in the background searches for a particular SSID from a Wi-Fi access point. This SSID is the generic SLAN name. The application then switches the existing Wi-Fi connection on the client device (if any) and connects to the SLAN using the SSID and authentication information (e.g., a programmed password). Then the application on the client device requests pre-authorized content and downloads it. When the process is complete, the application on the client devices reconnects to the original Wi-Fi network (if any).

These embodiments employ the same connection, search, transfer, and caching functions described above. In fact, these embodiments can be used for client devices as described above in addition to the new functions described here. These kiosks, in many embodiments, are an added function of the SND and SLAN.

The kiosk embodiments differ from that of the typical SND/SLAN functions in a few ways. In some embodiments, the “kiosk” is a physical device with branding to attract and market the product. In other embodiments, the “kiosk” is simply the SND Wi-Fi access point signals that connect to the SLAN. In other words, the idea of the kiosk is virtual. In these embodiments, the SLAN is the kiosk.

In many embodiments, the client device has software. In on embodiment, this software performs many functions such as (1) authenticating and connecting directly the SLAN Wi-Fi signal without user assistance; (2) transact or authenticate a transaction for buying or renting the content; and (3) assist the user in finding physical locations where connections to the SLAN can be made.

As described above, in some embodiments, the content is proactively delivered (preloaded) to a SND in a SLAN. As described above, the content chosen for preloading can be predicted by a learning algorithm that is measuring content traffic. This can extend to the kiosk function in the same way it did for the client device describe above.

However, in some of the kiosk embodiments, the content preloaded is a set library that is offered by a content provider. For example, the latest movie releases or game highlights could be preloaded. Note that the same embodiment can offer this service to both the kiosk users (that is client devices that automatically connect via software) and traditional client devices (client devices connected via authentication to the client SSID signal).

In other words, if a user obtains a SND to connect to their ISP, then that SND, and possibly the SLAN to which it is connected, can automatically serve as a “crowd sourced” kiosk for other users.

Dynamic Load Balancing Between the ISPs Connected to the SLAN

In one embodiment, the SLAN networks are used to load balance between ISPs. In this case, the SNDs of an SLAN are connected to two or more different ISPs. At any given time the bandwidth from the ISP to the SND can vary. In these embodiments, if an SND has a request that cannot be served locally by the SLAN (i.e., has to go through the ISP), the bandwidth of the ISP can be measured (using Ping and other software known to those skilled in the art). If the ISP bandwidth is found to be below some measures, the SND can make a request to find a SND on the SLAN connected to an ISP with better performance at the moment. Then the request is made from the first SND to the responding SND connected to the better performing ISP and the content is transferred thusly.

Client Devices

There are many client devices that can connect to an SND, with more being invented. In one embodiment, client devices include computers, tablets, and mobile phones. These devices do not need to run applications to take advantage of the SND and SLAN cached content. In one embodiment, for traditional requests, the SND will act as a proxy server to find the content, either locally or on the Internet.

However, in one embodiment, when these client devices are running applications compatible with Mo-DV's Mo2Go video delivery service, then the devices can connect automatically to a SND or SLAN and access pre-authorized content. In one embodiment, this automatic connection is performed using techniques like the method that SNDs connect to each other and are well known in the art. For example, the application on the client device, running in either the foreground or background, scans for a particular SSID that would indicate a Mo2Go enabled SND. Then, the application switches the network connection to connect to the SND, downloads the content, and switches back to the original network connection. This can be performed with or without notifying, and/or requesting permission from, the user.

In one embodiment, another client device is a set-top box. These devices are commonly used for converting cable and satellite signals into digital monitor signals, accessing the Internet, and providing a television user interface. Once again, these devices can utilize the content cache in a SND or SLAN without using software. However, in one embodiment, the Mo-DV's Mo2Go compatible software is running and thereby enabling the set-top box to access pre-authorized content.

In yet another embodiment, the client device is a Digital Video Recorder (DVR). In one embodiment, this is integrated with a set-top box, and this device caches content according to the user's instructions. In one embodiment, software is run on the DVR to enable the SND to search and transfer the content on the DVR. This makes the DVR content part of the SND and SLAN distributed content cache.

In one embodiment, the SND and the client device functions are combined in one device.

Propagating SNDs

Embodiments of the invention have the potential to create content caching and free up network bandwidth essentially at the first point of a network for a client device. This potential reduction in latency, bandwidth utilization, and the greater predictability and consistency in content delivery are highly valued features. The consumer benefits with a better experience. The ISP benefits with potentially less bandwidth and caching demands. The backbone backend network and source server companies benefit by less bandwidth and better performance. The network device manufacturers can offer SNDs with different configurations and tuning for competitive advantage. And, finally, the content provider benefits by offering a better experience and being more accessible.

There are several models for content delivery and Wi-Fi access currently. In one model, a company creates a private network and installs several Wi-Fi access points. Clearly, replacing some or all of these Wi-Fi access points with SNDs would reap a benefit, especially if the company's private network delivers a lot of the same content to multiple employees. Likewise, a company may install several SNDs connected directly to an ISP but restrict the SLAN to company installed SNDs.

In some cases, businesses set up Wi-Fi access points for customers. In places like coffee shops, airports, and stadiums using this technology could be a big advantage in high demand areas. This is an especially good environment for the content delivery kiosk.

In some cases, ISPs (such as Comcast's Xfinity) sell, rent, or give modem/Wi-Fi access points to their customers. In some cases, these devices also provide “crowd sourced” Wi-Fi hotspots (called xfinitywifi in the case of Xfinity). The customers have the technical interface to “opt out” of providing a hotspot, but many do not. Replacing these devices with SNDs would provide all the aforementioned benefits to the ISP customers and could provide kiosk and SLAN access to other customers as well. (See the example below.)

In many cases, Wi-Fi access points are located in homes and businesses without any coordination. Neighbors might have different ISPs with different capabilities and modem/Wi-Fi access point hardware devices. If these neighbors purchase or rent SND capable devices, they and their neighbors can reap the benefits. See the example below.

In one embodiment, the individual SND is configured to opt out of all or some of the functionality. For example embodiments, an SND could disallow certain other SNDs from connecting in the first place. The SND could prohibit the caching of certain content. The SND could limit the content that it requests from the SLAN. The SND could prevent others from requesting content through it to the ISP connected to that SND. The SND could prevent the query and requesting of content from certain, or all, attached client devices.

These prohibitions, and many more, can be configured either by the user or the owner of the SND (perhaps a company), saved as state, and then looked up by the SND before any functions are performed. This type of settings technology is common and straight forward and well known to those skilled in the art. However, the transparency and control these settings offer are critical for user acceptance and comfort with using this invention.

Example of a Centrally Administrated Set of a SLAN

To further illuminate the character of the techniques described herein, an example system deployed by a single ISP network provider is described in this section. This example relies on the ISP's network controllers for discover, connection, DNS, and content search.

In this example embodiment, a single large ISP (e.g., Comcast's Xfinity product) provides SND hardware to a number of its customers. Most, if not all, of the SNDs are the same dedicated hardware including a modem, at least two Wi-Fi signals (one for connecting to the clients and a hidden network for creating SLANs), significant cache memory, and a CPU and software that manage the SLAN interaction.

The customers install these SNDs in their home, business, or elsewhere as they wish. Similar to the way xfininitywifi hotspots, which originate in Comcast provided hardware, the customer can used software settings opt out of SLAN networks.

The ISP server knows the locations (more or less, depending on whether GPS is used) of these SNDs. When a customer turns on their SND for the first time, the SNDs upload the SSIDs of all of the other Wi-Fi signals within range to the ISP server. The ISP server knows which of these are also its own SNDs and instructs the new SND to join the hidden SSID of a SND in the SLAN network. Now the SND and the ISP server know the topography of the specific SLAN. In one embodiment, the ISP server stores this interconnected network information in a data store.

Subsequently, the new SND receives a request for a large piece of content from a client device, perhaps a movie, and the SND sends the request to the ISP server. The ISP server initially searches for the content (or content piece) within the SNDs SLAN. If the content is not found cached on any of the SNDs in the SLAN, then the ISP requests the content from the Internet. Now when the SND receives the content from the ISP (from the Internet, not the SLAN), it is accompanied by caching instructions from the ISP server. It then caches the content locally (stored on the SND) according to those instructions. In one embodiment, the caching instructions include functions like the duration of the storage, whether it is checked for update consistency before it is accessed from the cache, whether to fragment the content, whether to push it to other SND nodes in the network, and what to do with replacement content that might be pushed from the ISP later.

Otherwise, if the content is found cached on one or more of the SND(s) in the SLAN, the ISP server instructs the SND where access the content locally. The content is the transferred to the requesting SND through usual networking means.

In this example, the SNDs perform as slaves to the central servers at the ISP. The discovery of SLAN, connection to the SLAN, discovery of content, caching instructions, and transfer of content are all orchestrated by the ISP server. All of the learning algorithms and tuning of the caching strategies are performed centrally at the ISP server.

In fact, the ISP server can uncover weaknesses in the SLAN networks, such as holes in signal that prevent effective bridging between networks or insufficient cache memory on certain nodes. The ISP, for example, can proactively alter the physical topology of the network by changing the equipment or physically installing new (non-customer) nodes.

Example of an Ad-Hoc Formed and Administrated SLAN

In these example embodiments, an SLAN is formed by the peer-to-peer interaction of SNDs within range of each other. This ad-hoc network, or any individual SND, may or may not depend on network controllers for some, or all of the network functionality.

When an SND is initially turned on it looks for the hidden secondary SLAN Wi-Fi network. Upon finding the network the SND joins it via a secure password or credentialed transaction.

As in the previous example, the new SND receives from a client device a request for a large piece of content, perhaps a movie. In this embodiment, however, the SND sends a modified Bonjour request to all of the SNDs on its network searching for the content or a piece of the content.

Similar to the previous example, if the content is not found cached on any of the SNDs in the SLAN then the SND requests the content from the Internet. Now when the SND receives the content from the Internet via the ISP, it is cached locally (stored on the SND) according to the caching instructions that are preset, learned, or accompany the content. The caching instructions include functions like the duration of the storage, whether it is checked for update consistency before it is accessed from the cache, whether to fragment the content, whether to push it to other SND nodes in the network, and what to do with replacement content that might be pushed later.

If the content is found cached on one, or more, of the SNDs in the SLAN the requesting SND Pings the SND(s) with the content and, perhaps the Internet, to determine which content source is the best in terms of bandwidth and latency. Then the requesting SND makes a direct request to that source of the content. The content is then transferred to the requesting SND through usual networking means.

Additional Techniques for SND and SLAN Operations

Below are new techniques for interacting with SNDs and SLANs. These include, but are not limited to, techniques for connecting SNDs to create SLANs, finding cached content, managing the number of hops between SNDs, managing the content via Blockchain ledgers and Bit Torrent, using smart speaker devices, interacting with SLANs without an SND, interacting with DVRs, behaving as a virtual DVR, and hosting content on the SLAN.

Using Wi-Fi to Create a Network and Bonjour to Find Content

In one embodiment, a mesh network is a network that is interconnected to pass messages and data between source (request) and destination devices. In a classic mesh network, there are endpoints devices (such as client devices and traditional Wi-Fi access points), gateways devices that are connected to a larger network such as, for example, the Internet, and repeater devices that forward messages between endpoints and gateways. In one embodiment, the SND performs any of these functions depending on a given message and relative position (topology) in the network with respect to the requester of the message.

In one embodiment, an SND has a network connection via a modem, a Wi-Fi signal dedicated to connecting to client devices, and a second Wi-Fi signal dedicated to connecting to the SLAN mesh network. If the client device requests data that is found on the SND, then the SND acts as both a proxy server and as an endpoint (in this case the data source endpoint). If the client device requests data that is found on the SLAN but not on the SND to which it is connected, the SND acts as a proxy server, redirecting the request to the SND and/or device on the SLAN that has the data. There may be multiple hops, or repeaters, between the requesting SND and the responding SND. In this case, the SNDs are acting as repeaters. If a client device requests data not found on the SLAN, then the SND acts as a gateway device.

Mesh network technology is well known and provided by several venders. These networks are typically self-configuring. Thus, a new device can automatically join the mesh. Mesh networks are also self-healing meaning that they adapt to interruptions in service at different nodes. While traditional nodes in a mesh network can act as gateways, repeaters, and/or endpoints according to the topology, these nodes do nothing more than pass messages to and from requesting and responding devices. There is no proxy server, caching, or Zero Configuration Network functionality in the nodes of a traditional mesh network.

In one embodiment, the SLAN architecture adds to a mesh network. In addition to message and data passing, the nodes (SNDs) of a SLAN are also cache repositories of data, proxy servers, and Zero Configuration service providers for client requests. In some cases, service interruption on a key repository, or proxy node, would have a deleterious effect on the SLAN performance. In one embodiment, the SLAN topology is known, at least locally, by the SNDs. The distances (e.g., number of hops) the data travels and the size of the overall size of the SLAN are considered for the search, transfer, and caching strategies. This is described below.

In one embodiment, the SLAN topology is known globally by a server with a database. Given this topology, decisions about where data is cached and where the proxy requests are severed and made globally. This is especially important in the application where an ISP or other network server requests that a SLAN/SND pre-load and store content, thereby initiating or causing a download of content. In one embodiment, this server is outside the network, for example, a cloud server. In one embodiment, this server is one of the SNDs or connected directly to an SND.

In one embodiment, the cache contents of a SND, or an entire SLAN, are available to the connected networks, e.g., the Internet. In this way, the SLAN acts as a CDN for devices connected to the Internet in regional proximity to the SLAN. In this same way, SNDs and SLANs perform as nodes for distributed content delivery methods, such as Bit Torrent and Blockchain Video Streaming, as described below.

Also different from traditional mesh networks is the handling of Zero Configuration calls (e.g., Bonjour calls) at each SND. In one embodiment, there is the publication, discovery, and resolution for identifying all the SNDs in a directly connected mesh. Using the Bonjour syntax, for example, the publication of the SND service includes the Instance Name (e.g., SND identification, or SND MAC number), the Service Type (e.g., _snd), and the Domain (e.g., _tcp.local).

In one embodiment, there is the publication, discovery, and resolution for finding specific content located in a SND repository. Using the Bonjour syntax, for example, the publication of the SND service includes the Instance Name (e.g., content identification or hash), the Service Type (e.g., _snd_content), and the Domain (e.g., _tcp.local).

Managing Hops for Search, Transfer, and Caching

In one embodiment of a SLAN, each SND joins the local SLAN and makes Bonjour-like content requests without regard to the URL or number of hops of the source. In one embodiment, most or all of the SNDs repeat the request to fully query the SLAN. This embodiment will find the content source URL but may have many redundant repeated requests. These redundant requests may have a deleterious impact on the performance of the network.

To reduce redundant requests, in one embodiment, maps of the connected topography (i.e., which SNDs are directly connected to each other and how are indirectly connected SNDs connected via hops, or repeated requests) of the SLAN are created. Referring to the example shown in FIG. 8, 811 shows a direct connected mesh network (A) with SNDs 801A-804A, 805AB, and 806AB. 812 shows the direct connected mesh network (B) with SNDs 807B-810B, 805AB, and 806AB. Note that 805AB and 806AB are connected to all the SNDs while the other SNDs are only connected to either the A SND or the B SND.

The method described below shows one embodiment of a process by which each SND creates a local mapping of which requests to repeat to which other SNDs for the minimum number of repeated requests with full coverage.

In one embodiment, after connecting to an SLAN, each SND execute the following method to register on the SLAN as part of a registration process to join the SLAN:

Step A: the new SND requests that each directly connected SND send its connection data. This request is a connection data request. In one embodiment, this is achieved with a Zero Configuration Network request that is not repeated by any of the SNDs. Thus, only directly connected SNDs respond.

Step B: each SND responds with its connection data. In one embodiment, that data includes (at least) the responding SND's identification, a list of all the SND identifications to which the responding SND is connected, and a list of SNDs for which the responding SND will repeat messages. In one embodiment, the list includes every SND to which the responding SND is connected with the corresponding SNDs for which it will repeat messages (see the example below).

Step C: the requesting SND determines if there is any SND to which it is connected but another SND is not, either directly or by another SND repeating messages. If so, the requesting SND adds the uniquely connected SND to its repeat messages list.

Step D: the requesting SND determines if there are any SNDs to which it is not directly connected but another SND is connected. If there are such SNDs, the requesting SND then sends a direct request to those SNDs asking that the requesting SND be included in the other SNDs lists to repeat messages. This registration process creates a hierarchy for which an SND repeats message dependent on time joining the network. That is, it is only upon joining that an SND determines for which SNDs it will repeat messages and at that time it will not take over message repeating responsibility that an existing SND in the topology (e.g., the LAN) already has.

For example, referring to FIG. 8, assume all of the SNDs have performed this method except 805AB, 806AB, and 810B. First 805AB joins the network.

Step A: 805AB requests connection data from all the directly connected SNDs.

Step B: 805AB receives connection data from 801A, 802A, 803A, 804A, 807B, 808B, 809B. (Note that 806AB and 810B have yet to join the SLAN.) The connection data, for example, may be in JSON form such as this:

{ “SNDID”:“801A”, “connections”: [“802A”, “803A”, “804A”], “repeat”: { “802A”: “None”, “803A”: “None”, “804A”: “None” } }

Step C: 805AB determines that for SNDs 801A, 802A, 803A, and 804A, it will repeat messages onto SNDs 807B, 808B, and 809B and vice versa.

Step D: 805AB determines that there are no SNDs to which it is not directly connected. Thus, 805AB's connection data is the following:

{ ″SNDID″:″805AB″, ″connections″: [“801A″, “802A″, ″803A″, ″804A″, ″807B″, ″808B″, ″809B″], ″repeat″: { ″801A″: [″807B″, ″808B″, ″809B″], ″802A″: [″807B″, ″808B″, ″809B″], ″803A″: [″807B″, ″808B″, ″809B″], ″804A″: [″807B″, ″808B″, ″809B″], ″807A″: [“801A″, ″802A″, ″803A″, ″804A″], ″808A″: [“801A″, ″802A″, ″803A″, ″804A″], ″809A″: [“801A″, ″802A″, ″803A″, ″804A″] } }

Now, in this example, 810B joins the network. Step A: 810A makes the Bonjour request. Step B: 810B receives data from 805AB, 807B, 808B, and 809B. Also, 805AB, 807B, 808B, and 809B update their connection data to reflect the new connection with 810B. Step C: 810B determines that there are SNDs for which it needs to repeat signals. And Step D: 810B makes a request to 805AB that 805AB repeat its messages for 801A, 802A, 803A, and 804A. 805AB updates its connection data to incorporate the new repeat services for 810B.

Now, in this example, 806AB joins the network. 806AB performs Step A and receives connection data from all SNDs in Step B. In Step C, 806AB determines that all of the SNDs to which it is directly connects are connected to each other, either directly or by virtue of 805AB repeating messages. In Step D, 806AB determines that there are no other SNDs to which its messages need be repeated.

Thus, by having a directly-connected mapping known locally to each SND (each node) in which each SND knows its direct connections and which of those are connected to each other), when a message is passed, each SND knows if all, or only some, of its directly-connected SNDs have received the message, given this topology because each SND knows the SNDs it will receive messages from and knows which SNDs to which it is to pass messages. An SND will repeat the message to gain full coverage, and if more than one SND is connected both to the message sender and a SND that has not received the message, only one of those SNDs repeats the message. This results in a reduction of messaging passing as duplicate messages are not received by an SND.

In one embodiment, messages are sent with a count of how many times to repeat the message. For example, if the count is zero, the message is not repeated by any SND. If the count is one, the count is decremented to zero and then the SND passes on the message. And so on. Using this method, the extent of the messaging and number of repetitions is controlled.

In one embodiment, the message is a ZeroConf (or Bonjour) request for services. However, in this case, the service is content (or parts of the content) desired by the originating SND. If an SND has the content being requested, then that SND's IP address or URI is sent to the originating SND. Then the originating SND can request the data transfer directly (or possibly using a chain of repeating intermediate SNDs).

Note that this method has the advantage of easily incorporating new SNDs into the SLAN. However, there are two issues that are not addressed. First, how to manage race conditions if two or more SNDs arrive on the SLAN at the same time. And second, how to adapt if a SND drops off the SLAN.

There are several methods for handling the race condition for new SNDs arriving at the same time. In one embodiment, a timestamp is included in the connection data from each SND indicating when it was updated. If the update time of any of the connection data is too close to the current time, the SND repeats the process after a significant, potentially random, delay (e.g., seconds to minutes). Whether the update time of any of the connection data is too close to the current time is based on a predefined period of time, such that if the update time is within that predetermined period of time (e.g., within that threshold), the SND resends the connection data request.

In one embodiment, one SND behaves as a controller and instructs each of the other SNDs to perform (reset) the registration method in sequence. In one embodiment, the SND with the lowest MAC acts as the controller for the network (e.g., LAN) and commands a reset. In one embodiment, the reset of the registration process is propagated via repetition. In this way, the entire SLAN can be reset

In one embodiment, the SNDs receive a signal from a central server (e.g., on the Internet or at the ISP) to reset the network by performing the registration processes with all the SNDs in the topology. In such a case, the central server is able to command the reset for the entire topology (e.g., a LAN).

In one embodiment, a central server can request the connection data from each of the SNDs. With this information, the entire connection mapping of the SLAN can be determined. In one embodiment, this mapping is used for one or more of analytics, performance measurements, determining where to improve the network by adding SNDs, and/or determining the best caching strategies to employ.

The other problem is resetting the mapping when a SND leaves the network. In one embodiment, there is a power down sequence that allows the departing SND to signal the rest of the SLAN that it is leaving. The departing SND signals the SLAN that it is leaving and sends its connection data. The remaining SNDs parse the connection data to see if there are common connections that could replace the departing SND's repetition services. For example, referring to the SLAN describe earlier, if SND 805AB departs, SND 806AB can take on all of the request message repetition for which SND 806AB has common connections.

In one embodiment, the departure of an SND triggers a serial reset of the network starting with a designated first SND (e.g., in MAC order). In other words, when an SND is deleted from the network topology (e.g., the LAN), a reset of the network occurs and the reset causes the registration process to be repeated. In one embodiment, the reset may be started by a controller (e.g., another SND, another SND with the lowest MAC, a central server, etc.).

In one embodiment, where there is no shut down sequence or the power is lost immediately, the SNDs detect a missing node by periodically pinging, e.g., asking for a response from, the directly connected SNDs.

In one embodiment, the SLAN resets automatically on a schedule or timeout counter.

The number of repeats or hops that data transfer needs from one SND to another in the SLAN has a direct bearing on the overall performance and the behavior of the network. In one embodiment, request messages are sent with a hop limit, an integer representing the number of allow hops. At each SND that repeats the request, the hop limit is decremented by one. When a request arrives with a hop limit of zero the receiving SND does not repeat it.

Blockchain Ledgers for Content Sourcing, Authorization, and Analytics

Most video delivery on the Internet is dominated by large companies such as, for example, AWS, Google, Microsoft, Akamai, and others. As video delivery explodes on the Internet, there is the opportunity to disrupt centralized streaming systems with distributed system. One such example (described below) is BitTorrent. However, this network relies on a single central server to orchestrate the storage and distribution of content. In many situations, this single server is a single point of failure, a security risk, and/or a bottleneck.

Blockchain technology creates secure crowd-sourced authoritative ledgers without a central server or certificate authority. When used for video delivery, the blockchain ledger points to heavily encrypted distributed content, handles authorization for that content, and logs all accesses that content using blockchain technology.

In one embodiment, the SND behaves as a blockchain mining resource (i.e., updating the ledger) for distributed content. In one embodiment, the SND encrypts and stores content from other sources and incorporates that content in the blockchain ledger.

In one embodiment, the SND uses the blockchain ledger to find distributed content and/or authorization information for that content. Using this information, the SND is able to request the content, decrypt the content, and send it to the client device.

In one embodiment, one or more of the SNDs on the SLAN behave as nodes both mining the blockchain ledger and storing content. The content stored on the SLAN and the blockchain ledger are available on the Internet (via one or more SNDs gateway connections) as well as to the SLAN.

In one embodiment, the SND, or the collective SLAN, is awarded credit (similar to bitcoin mining) for mining the blockchain ledger and/or storing the content. According the business model, this credit can be redeemed by the owner of the SND (or the collective owners of the SLAN) in many ways, e.g., streaming video purchase or rental, bitcoin. This enables users to buy SNDs to reduce content acquisition costs, for example.

Bit Torrent on the SLAN

As mentioned above, in one embodiment, some or all of the SNDs in a SLAN participate in a Bit Torrent network. In this well-known distributed video delivery model, content is divided into pieces and stored on local machines rather than using Internet resources. However, in the classic Bit Torrent model, there is a central server with a database that maps the locations of all the content pieces and the Internet is used for transfer.

In one embodiment of an SND, pieces of content are stored in the SND cache. These pieces are accessible to other SNDs on the SLAN, but also to other devices participating in the Bit Torrent network anywhere on the Internet. In other words, the SND behaves exactly as a Bit Torrent device.

In one embodiment, a single SND performs the role of the Bit Torrent network's tracker (central server with the database).

In one embodiment, several SNDs in a SLAN perform the role of the Bit Torrent network's tracker. When a Bit Torrent request comes into a SND that SND can forward it to another SND on the SLAN. This allows for multiple servers responding to Bit Torrent requests. In one embodiment, the SNDs access a common Bit Torrent tracker database. In one embodiment, the SNDs use copied versions of the Bit Torrent tracker database.

Incorporating SND Hardware and Function into Other Network Devices

In one embodiment, the SND proxy and caching functions (and the necessary memory and computing hardware) are incorporated into a smart speaker (e.g., Amazon Echo, Google Home, Apple HomePod). When video content is requested (by voice command), the smart speaker performs the proxy search for the content locally on the SND/Smart Speaker, then on the SLAN, and then to the Internet.

In one embodiment, the smart speaker includes the software for accessing a SLAN via a normal Wi-Fi access point (as described below in the section, “Accessing the SLAN without SND hardware”).

In one embodiment, the smart speaker also includes the Wi-Fi signal functions of a SND and behaves as a part of a SLAN. Essentially, the SND is the smart speaker or the two devices function as one.

In one embodiment, the smart speaker is connected to a traditional SND and passes the content requests through the SND. In one embodiment, the smart speaker translates the proprietary request (used to communicate directly with the proprietary server, e.g., AWS, Google Cloud, iCloud) into a traditional content request that can be understood by the SND.

In one embodiment, the SND has the software needed to parse the proprietary requests from the smart speaker. In one embodiment, the SND/Smart Speaker requests translation from the proprietary server.

Accessing the SLAN without SND Hardware

When a device is connected to a SND and requests content, the SND performs a proxy request for that content across a SLAN as described above. In one embodiment, the content on a SLAN is accessed with a conventional Wi-Fi access point.

In one embodiment, when the Wi-Fi access point to which the requesting device is connected is not a SND or part of a SLAN, the requesting device uses application software to find and connect to a local SLAN directly (not using a secondary Wi-Fi signal). The request then proceeds as described above. When completed, the application reconnects with original Wi-Fi access point.

In one embodiment, the device, using a software application, instructs a Wi-Fi access point that is not an SND or connected to a SLAN to make the connection with SLAN. The Wi-Fi access point then acts as a repeater for the SLAN, extending the range of the SLAN. The downside is that the transactions across the SLAN have to be intermediated with client application software that conforms to the SLAN communication protocols.

Using a Digital Video Recorder (DVR) as a Repository

As mentioned above, a DVR, or other client device connected to the SND, can provide content to the SLAN. With devices such as computers, tablets, mobile phones and other similar devices, the interaction between the SND and the device providing content is programmed into an application on the device. These devices, however, are often not connected to the SND so the content stored on them is less reliable for access across the SLAN.

DVRs, by contrast, are usually always available on a network. And a DVRs primary purpose so storing content for consumption at a later time, the same as the SND cache. However, most DVRs do not run custom software or have APIs for access between the SND and DVR. Thus, the connection between the SND and the DVR will depend on the type of DVR.

In one embodiment, a new DVR is designed with an API that interacts with software in the SND. In one embodiment, the DVR has a specific program for synchronization with a computer (or SND). For example, AT&T's DIRECTV™ has software called GenieCO™

In one embodiment, the SND knows the content available on the devices and has the ability to access that content.

Using SLAN as a “Virtual” DVR

As mentioned above, an SND can be preloaded with content to perform the same function as a Mo2Go™ SpeedSpot™. Given the interconnectivity and transfer capabilities of the SLAN, the SND that caches the content is not as important for retrieving the content.

This same “pre-loading” function can be used to provide a “virtual” Digital Video Recorder function across the SLAN. A traditional DVR allows a user to select programs broadcast at specific times to be stored for viewing at a later time. The same functionality can be provided by an SND.

The advantages of one embodiment of a virtual DVR is that no extra hardware is needed; the content can be shared throughout the SLAN reducing the redundancy in bandwidth usage and storage; the content is available on any device; the content is always available regardless of the Internet connection or DVR status in a user's home; and the service can be upgraded, altered, or improved via software and parameter changes.

In one embodiment, an ISP, content provider, or other Internet service offers the software for selecting content and stores (or accesses from a third party) the content online in the Internet. This embodiment can be independent of SLAN and SND embodiments described above.

There are several ways that an SLAN could act as a virtual SND. In one embodiment, the ISP creates software and/or website for selecting the programming to capture. Then, the ISP “loads” the content onto one or more SND(s) on the SLAN. For example, a user preselects a live broadcast, e.g., a sporting event, to record on the virtual DVR. Then, at the time of the event, the ISP uses an SND API call to load the streamed content (or content file after the event). If more than one user in the SLAN has preselected the event, only one copy of the event content need be delivered to any SND in the SLAN.

In one embodiment, the content provider (or a third party) provides the software and/or website for selecting the content. The SND requests the content from the content provider directly. First, the SND checks all the other SNDs on the SLAN to see if the content has already been requested. In one embodiment, this is performed by a Bonjour-like broadcast request. If it has already been requested, the SND will not download the content and will note the address of the content in the SLAN.

If the content has not been requested on the SLAN, the SND requests the content directly from the content provider. For live streaming, in one embodiment, the request is timed for the beginning of the event and the streamed data is captured. For VOD, the content is requested and downloaded at a convenient time given bandwidth constraints. (In one embodiment, content providers choose to create VOD content from a live stream and offer that to the SND in pieces or as complete content, after the event.)

In one embodiment, the user request is stored and the content is saved for the user viewing. Deletion occurs on user request or content timeout (or other business rules).

Creating and Managing Locally Hosted Content

In one embodiment, individual SNDs behave as web servers providing both web content upload and download capability, web page messaging and blogging (e.g., Facebook™ NextDoor™), and other web functions. (Many traditional Wi-Fi access points already include web servers for the user settings control interface.) Utilizing web server software (e.g., Apache HTTP Web Server) and traditional web programming tools (e.g., JavaScript, HTML) the SND can act as a web server.

Depending on the security settings and configuration, the SND web server can be a private server for devices connected directly, or a local server for only devices connected to the SLAN, or using the ISP gateway as a web server accessible over the Internet.

In one embodiment, using standard web security and linkage, content for the a given web page is sourced at the SND, or the SLAN, or the World Wide Web (WWW) via the Internet.

The applications for a personal web server providing content to the WWW are as multiple and well known (e.g., web pages, photo and video hosting, messaging).

The applications for a personal server (e.g., limited to devices directly connected to an SND and any local repeaters) include access to data across user devices without interacting with the Internet. Calendars, documents, and backup data are examples.

One unique feature is the ability to set up web sites and services that are only accessible to devices connoted to the SLAN, i.e., a Neighborhood Wide Web or NWW. There are sites, such as NextDoor, that create messaging and blogging pages limited to only those who live in the neighborhood. However, ensuring that only neighbors can access the content is a laborious process that includes exchanging postcards using snail mail. With a SLAN network, membership would be automatically limited to those neighbors directly connected. Furthermore, the content would never reach the WWW. With all of the WWW tools available, applications for such a NWW are limited only by the imagination of the neighbors.

There is a number of example embodiments described herein.

Example 1 is a network arrangement comprising: a plurality of access points that are part of one or more existing networks and operable to individually address and communicate with each other to form a local area network (LAN) to transfer data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more existing networks, wherein each access point of the plurality of access points is associated with a cache to store content that may be forwarded, via one or more direct point-to-point transfers between access point pairs of the plurality of access points, to other access points in the plurality of access points in response to transfer request messages to transfer the content; wherein each access point has a mapping indicative of a first set of one or more access points of the plurality of access points, if any, for which said each access point is to repeat messages and, for each access point in the first set, a first list of one or more access points in the plurality of access points from which the messages are to be forwarded once received if necessary, with no two access points in the plurality of access points that are directly connected to a third access point repeating a same message to the third access point.

Example 2 is the network arrangement of example 1 that may optionally include that each access point in the plurality of access points is directly connected to a second set of one of more of the access points and having information indicative of which access points in the second set of one of more of the access points are connected with point-to-point links.

Example 3 is the network arrangement of example 1 that may optionally include that the mapping for said each access point indicating to which access points said each access point is to repeat messages is initially set when said each access point joined the LAN.

Example 4 is the network arrangement of example 1 that may optionally include that the mapping is created by: sending, by one access point of the plurality of access points as it joins the LAN, a connection data request to each access point to which it is directly connected; receiving, by the one access point, connection data from said each access point responding to the connection data request, the connection data including an identifier, a second list of all access points to which the responding access point is connected, and a list of access points for which the responding access point will repeat messages; determining whether any access point, to which it is directly connected, is not connected to any other access point to which it is directly connected either directly or by another access point repeating messages; and if the one access point determines from the connection data that an access point, to which it is directly connected, is not connected to any other access point to which it is directly connected either directly or by another access point repeating messages, then sending a request to said any access point to add the one access point to its first list of one or more access points in the plurality of access points from which the messages are to be forwarded once received.

Example 5 is the network arrangement of example 4 that may optionally include determining whether any access point to which it is not directly connected but is connected to any other access point to which it is directly connected; and if the one access point determines from the connection data that an access point to which it is not directly connected but is connected to any other access point to which it is directly connected, then sending a request to the access point to which it is connected to forward messages to the access point to which it is not directly connected.

Example 6 is the network arrangement of example 4 that may optionally include that the connection data request comprises a Bonjour request.

Example 7 is the network arrangement of example 4 that may optionally include that departure of one of the access points triggers a reset of the LAN, in which each remaining access point sends the connection data request to each access point to which it is directly connected.

Example 8 is the network arrangement of example 4 that may optionally include that the connection data includes timestamp information indicating when an update last occurred with respect to the connection data, wherein upon receipt of the connection data, the one access point determines if the connection data was updated within a predetermined time of the connection data request based on the timestamp information and, if so, resends the connection data request to each access point to which it is directly connected.

Example 9 is the network arrangement of example 4 that may optionally include that one of the access points of the plurality of access points acts as a controller for the LAN and is operable to triggers a reset of the LAN.

Example 10 is the network arrangement of example 9 that may optionally include that wherein the one access point acting as the controller has a lowest MAC of all access points in the plurality of access points.

Example 11 is the network arrangement of example 1 that may optionally include a central server to act as a controller for the LAN and operable to trigger a reset of the LAN.

Example 12 is the network arrangement of example 1 that may optionally include that the one access point is operable to address one or more access points of the plurality of access points and to select among the one or more access points from which cached content is available as a source for the desired content for a client coupled to the one access point that requested the content.

Example 13 is a method for use in a network arrangement in which communication occurs between a plurality of access points that are part of one or more existing networks and form a local area network (LAN) to transfer data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more first existing networks, by access points individually addressing each other, wherein each access point of the plurality of access points is associated with a cache to store content that may be forwarded to other access points access points in the plurality of access points, the method comprising: generating, by one access point, a mapping indicative of a first set of one or more access points of the plurality of access points, if any, for which said each access point is to repeat messages and, for each access point in the first set, a first list of one or more access points in the plurality of access points from which the messages are to be forwarded once received if necessary, with no two access points in the plurality of access points that are directly connected to a third access point repeating a same message to the third access point; identifying, by the one access point, one or more of the plurality of access points from which desired content is cached; and requesting, by the one access point, at least one of the one or more of the plurality of access points to transfer desired content to the one access point via one or more direct point-to-point transfers between access pairs of the plurality of access points.

Example 14 is the method of example 13 that may optionally include that each access point in the plurality of access points is directly connected to a second set of one of more of the access points and having information indicative of which access points in the second set of one of more of the access points are connected with point-to-point links.

Example 15 is the method of example 13 that may optionally include that the mapping for said each access point indicating to which access points said each access point is to repeat messages is initially set when said each access point joined the LAN.

Example 16 is the method of example 13 that may optionally include that generating the mapping comprises: sending, by one access point of the plurality of access points as it joins the LAN, a connection data request to each access point to which it is directly connected; receiving, by the one access point, connection data from said each access point responding to the connection data request, the connection data including an identifier, a second list of all access points to which the responding access point is connected, and a list of access points for which the responding access point will repeat messages; determining whether any access point, to which it is directly connected, is not connected to any other access point to which it is directly connected either directly or by another access point repeating messages; and if the one access point determines from the connection data that an access point, to which it is directly connected, is not connected to any other access point to which it is directly connected either directly or by another access point repeating messages, then sending a request to said any access point to add the one access point to its first list of one or more access points in the plurality of access points from which the messages are to be forwarded once received.

Example 17 is the method of example 16 that may optionally include determining whether any access point to which it is not directly connected but is connected to any other access point to which it is directly connected; and if the one access point determines from the connection data that an access point to which it is not directly connected but is connected to any other access point to which it is directly connected, then sending a request to the access point to which it is connected to forward the messages to the access point to which it is not directly connected.

Example 18 is one or more non-transitory computer readable storage media having instructions stored thereupon which, when executed by a system having at least a processor and a memory therein, the instructions cause the system to perform a method for use in a network arrangement in which communication occurs between a plurality of access points that are part of one or more existing networks and form a local area network (LAN) to transfer data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more first existing networks, by access points individually addressing each other, wherein each access point of the plurality of access points is associated with a cache to store content that may be forwarded to other access points access points in the plurality of access points, the method comprising: generating, by one access point, a mapping indicative of a first set of one or more access points of the plurality of access points, if any, for which said each access point is to repeat messages and, for each access point in the first set, a first list of one or more access points in the plurality of access points from which the messages are to be forwarded once received if necessary, with no two access points in the plurality of access points that are directly connected to a third access point repeating a same message to the third access point; identifying, by the one access point, one or more of the plurality of access points from which desired content is cached; and requesting, by the one access point, at least one of the one or more of the plurality of access points to transfer desired content to the one access point via one or more direct point-to-point transfers between access pairs of the plurality of access points.

Example 19 is a device for use in a network arrangement a plurality of access points that are part of one or more existing networks and operable to individually address and communicate with each other to form a local area network (LAN) to transfer data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more first existing networks, the client device comprising: a first communication interface to connect to the one or more existing networks; a second wireless communication interface to connect to one or more access points of the plurality of access points that are part of the one or more existing networks, via individually addresses, to transfer data using point-to-point links; a cache to store content; and connection logic coupled to the first and second communication interfaces and the cache to set up a wireless connection by itself using the second wireless communication interface to one or more access points to transfer desired content cached by individual access points of the plurality of access points, the wireless connection used to request at least one of the one or more of the plurality of access points to transfer the desired content via one or more direct point-to-point transfers with one or more access points in the plurality of access points.

Example 20 is the device of example 19 that may optionally include that the connection logic is operable to set up the wireless connection by itself in response to an input from a network controller that is part of the LAN.

Example 21 is a method for connecting SNDs to create SLANs as described herein.

Example 22 is a method for finding cached content as described herein.

Example 23 is a method for managing a number of hops between SNDs as described herein.

Example 24 is a method for managing content via Blockchain ledgers and Bit Torrent as described herein.

Example 25 is a method for using smart speaker devices as described herein.

Example 26 is a method for interacting with SLANs without an SND as described herein.

Example 27 is a method for interacting with DVRs as described herein.

Example 28 is a method for having a SLAN behave as a virtual DVR as described herein.

Example 29 is a method for hosting content on an SLAN as described herein.

Example 30 is an apparatus that performs one or more of the methods of examples 21-29.

Additional Considerations

As used herein any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.

As used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Further, unless expressly stated to the contrary, “or” refers to an inclusive or and not to an exclusive or. For example, a condition A or B is satisfied by any one of the following: A is true (or present) and B is false (or not present), A is false (or not present) and B is true (or present), and both A and B are true (or present).

In addition, use of the “a” or “an” are employed to describe elements and components of the embodiments herein. This is done merely for convenience and to give a general sense of the invention. This description should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise.

The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated.

Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.

It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or “networking” or the like, refer to the action and processes of a computer system(s), or similar electronic computing device(s), that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.

The present invention also relates to apparatus for performing the operations herein. This apparatus may be specifically constructed for the required purposes, or it may be comprised of a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus. Similarly, general purpose networking equipment may be employed including, but not limited to, modems, routers, Wi-Fi access points, Bluetooth, and other wired and wireless networking hardware systems.

The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.

Whereas many alterations and modifications of the present invention will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that any particular embodiment shown and described by way of illustration is in no way intended to be considered limiting. Therefore, references to details of various embodiments are not intended to limit the scope of the claims which in themselves recite only those features regarded as essential to the invention. 

We claim:
 1. A network arrangement comprising: a plurality of access points that are part of one or more existing networks and operable to individually address and communicate with each other to form a local area network (LAN) to transfer data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more existing networks, wherein each access point of the plurality of access points is associated with a cache to store content that may be forwarded, via one or more direct point-to-point transfers between access point pairs of the plurality of access points, to other access points in the plurality of access points in response to transfer request messages to transfer the content; wherein each access point has a mapping indicative of a first set of one or more access points of the plurality of access points, if any, for which said each access point is to repeat messages and, for each access point in the first set, a first list of one or more access points in the plurality of access points from which the messages are to be forwarded once received if necessary, with no two access points in the plurality of access points that are directly connected to a third access point repeating a same message to the third access point.
 2. The network arrangement of claim 1 wherein each access point in the plurality of access points is directly connected to a second set of one of more of the access points and having information indicative of which access points in the second set of one of more of the access points are connected with point-to-point links.
 3. The network arrangement defined in claim 1 wherein the mapping for said each access point indicating to which access points said each access point is to repeat messages is initially set when said each access point joined the LAN.
 4. The network arrangement of claim 1 wherein the mapping is created by: sending, by one access point of the plurality of access points as it joins the LAN, a connection data request to each access point to which it is directly connected; receiving, by the one access point, connection data from said each access point responding to the connection data request, the connection data including an identifier, a second list of all access points to which the responding access point is connected, and a list of access points for which the responding access point will repeat messages; determining whether any access point, to which it is directly connected, is not connected to any other access point to which it is directly connected either directly or by another access point repeating messages; and if the one access point determines from the connection data that an access point, to which it is directly connected, is not connected to any other access point to which it is directly connected either directly or by another access point repeating messages, then sending a request to said any access point to add the one access point to its first list of one or more access points in the plurality of access points from which the messages are to be forwarded once received.
 5. The network arrangement of claim 4 further comprising: determining whether any access point to which it is not directly connected but is connected to any other access point to which it is directly connected; and if the one access point determines from the connection data that an access point to which it is not directly connected but is connected to any other access point to which it is directly connected, then sending a request to the access point to which it is connected to forward messages to the access point to which it is not directly connected.
 6. The network arrangement of claim 4 wherein the connection data request comprises a Bonjour request.
 7. The network arrangement of claim 4 wherein departure of one of the access points triggers a reset of the LAN, in which each remaining access point sends the connection data request to each access point to which it is directly connected.
 8. The network arrangement of claim 4 wherein the connection data includes timestamp information indicating when an update last occurred with respect to the connection data, wherein upon receipt of the connection data, the one access point determines if the connection data was updated within a predetermined time of the connection data request based on the timestamp information and, if so, resends the connection data request to each access point to which it is directly connected.
 9. The network arrangement of claim 4 wherein one of the access points of the plurality of access points acts as a controller for the LAN and is operable to triggers a reset of the LAN.
 10. The network arrangement of claim 9 wherein the one access point acting as the controller has a lowest MAC of all access points in the plurality of access points.
 11. The network arrangement of claim 1 further comprising a central server to act as a controller for the LAN and operable to trigger a reset of the LAN.
 12. The network arrangement defined in claim 1 wherein the one access point is operable to address one or more access points of the plurality of access points and to select among the one or more access points from which cached content is available as a source for the desired content for a client coupled to the one access point that requested the content.
 13. A method for use in a network arrangement in which communication occurs between a plurality of access points that are part of one or more existing networks and form a local area network (LAN) to transfer data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more first existing networks, by access points individually addressing each other, wherein each access point of the plurality of access points is associated with a cache to store content that may be forwarded to other access points access points in the plurality of access points, the method comprising: generating, by one access point, a mapping indicative of a first set of one or more access points of the plurality of access points, if any, for which said each access point is to repeat messages and, for each access point in the first set, a first list of one or more access points in the plurality of access points from which the messages are to be forwarded once received if necessary, with no two access points in the plurality of access points that are directly connected to a third access point repeating a same message to the third access point; identifying, by the one access point, one or more of the plurality of access points from which desired content is cached; and requesting, by the one access point, at least one of the one or more of the plurality of access points to transfer desired content to the one access point via one or more direct point-to-point transfers between access pairs of the plurality of access points.
 14. The method of claim 13 wherein each access point in the plurality of access points is directly connected to a second set of one of more of the access points and having information indicative of which access points in the second set of one of more of the access points are connected with point-to-point links.
 15. The method defined in claim 13 wherein the mapping for said each access point indicating to which access points said each access point s to repeat messages is initially set when said each access point joined the LAN.
 16. The method of claim 13 wherein generating the mapping comprises: sending, by one access point of the plurality of access points as it joins the LAN, a connection data request to each access point to which it is directly connected; receiving, by the one access point, connection data from said each access point responding to the connection data request, the connection data including an identifier, a second list of all access points to which the responding access point is connected, and a list of access points for which the responding access point will repeat messages; determining whether any access point, to which it is directly connected, is not connected to any other access point to which it is directly connected either directly or by another access point repeating messages; and if the one access point determines from the connection data that an access point, to which it is directly connected, is not connected to any other access point to which it is directly connected either directly or by another access point repeating messages, then sending a request to said any access point to add the one access point to its first list of one or more access points in the plurality of access points from which the messages are to be forwarded once received.
 17. The method of claim 16 further comprising: determining whether any access point to which it is not directly connected but is connected to any other access point to which it is directly connected; and if the one access point determines from the connection data that an access point to which it is not directly connected but is connected to any other access point to which it is directly connected, then sending a request to the access point to which it is connected to forward the messages to the access point to which it is not directly connected.
 18. One or more non-transitory computer readable storage media having instructions stored thereupon which, when executed by a system having at least a processor and a memory therein, the instructions cause the system to perform a method for use in a network arrangement in which communication occurs between a plurality of access points that are part of one or more existing networks and form a local area network (LAN) to transfer data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more first existing networks, by access points individually addressing each other, wherein each access point of the plurality of access points is associated with a cache to store content that may be forwarded to other access points access points in the plurality of access points, the method comprising: generating, by one access point, a mapping indicative of a first set of one or more access points of the plurality of access points, if any, for which said each access point is to repeat messages and, for each access point in the first set, a first list of one or more access points in the plurality of access points from which the messages are to be forwarded once received if necessary, with no two access points in the plurality of access points that are directly connected to a third access point repeating a same message to the third access point; identifying, by the one access point, one or more of the plurality of access points from which desired content is cached; and requesting, by the one access point, at least one of the one or more of the plurality of access points to transfer desired content to the one access point via one or more direct point-to-point transfers between access pairs of the plurality of access points.
 19. A device for use in a network arrangement a plurality of access points that are part of one or more existing networks and operable to individually address and communicate with each other to form a local area network (LAN) to transfer data between two or more of the plurality of access points using point-to-point links independent of their function in the one or more first existing networks, the client device comprising: a first communication interface to connect to the one or more existing networks; a second wireless communication interface to connect to one or more access points of the plurality of access points that are part of the one or more existing networks, via individually addresses, to transfer data using point-to-point links; a cache to store content; and connection logic coupled to the first and second communication interfaces and the cache to set up a wireless connection by itself using the second wireless communication interface to one or more access points to transfer desired content cached by individual access points of the plurality of access points, the wireless connection used to request at least one of the one or more of the plurality of access points to transfer the desired content via one or more direct point-to-point transfers with one or more access points in the plurality of access points.
 20. The device defined in claim 19 wherein the connection logic is operable to set up the wireless connection by itself in response to an input from a network controller that is part of the LAN. 